package main

import "fmt"

//通过 73协程.go ，我们发现协程在还没执行时，main就已结束和退出了。
//前面的例子是使用 time.Sleep 来解决这个问题的，
//其实正确的方式是，使用信道来标识完成状态。

func main() {
	done := make(chan bool)
	go func() {
		for i := 0; i < 5; i++ {
			fmt.Println(i)
		}
		done <- true //向信道中写入数据，目的是标识出任务已完成
	}()

	//执行到这里时，会产生阻塞，需要等到能读取到数据后，才会继续执行。什么时候能读取到数据呢？就是在协程执行完成之后。
	<-done
}
